package IHM;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import Metier.Theme;

/**
 * Classe permettant l'affichage du choix des themes predefinis
 * @author Aubry Thomas
 * @author Bouchet Sylvain
 * @author Fauvel Alexis
 * @author Lessieur Jocelyn
 * @author Mathias Bastien 
 * @author Teuf Antoine
 * @version 1.0
 */
public class FenetreChoixTheme extends JDialog implements ListSelectionListener, ActionListener{

	/**
	 * JList contenant les themes
	 */
	private JList lstTheme;
	
	/**
	 * JPanel de l'aperçu du theme
	 */
	private JPanel preview;
	
	/**
	 * Boutton Valider et Annuler
	 */
	private JButton ann,val;
	
	/**
	 * JLabel des Elements de l'aperçu
	 */
	private JLabel  titrePage,titre1,titre2,sstitre1,sstitre2,par1,par2,lien1,lien2;
	
	/**
	 * barre d'outil de l'application
	 */
	private ToolBar toolBar;
	
	/**
	 * Constructeur de la classe FenetreChoixTheme
	 * @param tbt	la tool bar a la quel est associé le bouton du choix
	 */
	public FenetreChoixTheme(ToolBar tbt){
		toolBar=tbt;
		setTitle("Choix Du Thème");
		setLocationRelativeTo(null);
		setSize(300,200);
		setLayout(new BorderLayout());
		setModal(true);
		
		JPanel haut= new JPanel(new BorderLayout());
		JPanel bas= new JPanel();
	
		lstTheme= new JList(initThemes());
		lstTheme.setPreferredSize(new Dimension(100, getHeight()));
		lstTheme.addListSelectionListener(this);
		haut.add(lstTheme, "West");
		
		preview = new JPanel(new GridLayout(9, 1));
		titrePage=new JLabel("TitrePage",JLabel.CENTER);
		preview.add(titrePage);
		titre1=new JLabel("Titre 1",JLabel.LEFT);
		preview.add(titre1);
		sstitre1=new JLabel("    Sous-Titre 1",JLabel.LEFT);
		preview.add(sstitre1);
		par1=new JLabel("        Paragraphe 1",JLabel.LEFT);
		preview.add(par1);
		lien1=new JLabel("        Lien 1",JLabel.LEFT);
		preview.add(lien1);
		titre2=new JLabel("Titre 2",JLabel.LEFT);
		preview.add(titre2);
		sstitre2=new JLabel("    Sous-Titre 2",JLabel.LEFT);
		preview.add(sstitre2);
		par2=new JLabel("        Paragraphe 2",JLabel.LEFT);
		preview.add(par2);
		lien2=new JLabel("        Lien 2",JLabel.LEFT);
		preview.add(lien2);
		haut.add(preview,"Center");
		
		add(haut);
		
		ann=new JButton("Annuler");
		ann.addActionListener(this);
		val=new JButton("Valider");
		val.addActionListener(this);
		bas.add(val);
		bas.add(ann);
		
		add(bas,"South");
		
		
		preview.setBackground(tbt.getTheme().getFond());
		titrePage.setForeground(tbt.getTheme().getTitrePage());
		titre1.setForeground(tbt.getTheme().getTitre());
		titre2.setForeground(tbt.getTheme().getTitre());
		sstitre1.setForeground(tbt.getTheme().getSousTitre());
		sstitre2.setForeground(tbt.getTheme().getSousTitre());
		par1.setForeground(tbt.getTheme().getParagraphe());
		par2.setForeground(tbt.getTheme().getParagraphe());
		lien1.setForeground(tbt.getTheme().getLien());
		lien2.setForeground(tbt.getTheme().getLien());
		
		lstTheme.setSelectedIndex(0);
		
		setVisible(true);				
	}
	
	/**
	 * Permet d'initialiser les themes predefinis
	 * @return	un tablau contenant les themes predifinis
	 */
	public Theme[] initThemes(){
		Theme[] tab = new Theme[5];
		tab[0]=new Theme("Theme1", new Color(211,255,188), new Color(0,75,32), new Color(59,108,50), new Color(0,153,0), new Color(86,140,47), new Color(0,204,51));
		tab[1]=new Theme("Theme2", new Color(239,251,255), new Color(0,0,175), new Color(51,51,255), new Color(102,102,255), new Color(42,134,247), new Color(150,150,255));
		tab[2]=new Theme("Theme3", new Color(255,202,149), new Color(255,0,0), new Color(153,102,0), new Color(198,99,0), new Color(255,89,0),  new Color(128,64,0));
		tab[3]=new Theme("Theme4", new Color(239,217,249), new Color(89,0,179), new Color(114,32,145), new Color(153,0,255), new Color(165,61,220), new Color(255,0,255));
		tab[4]=new Theme("Theme5", new Color(180,180,180), new Color(0,0,0), new Color(51,51,51), new Color(80,80,80), new Color(102,102,102), new Color(255,255,255));
		
		return tab;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==ann)
			dispose();
		if(e.getSource()==val){
			toolBar.getIhm().getControleur().getProjetEnCours().setTheme((Theme)lstTheme.getSelectedValue());
			toolBar.majThemeActuel();
			toolBar.getIhm().majVisu();
			dispose();
		}
	}

	@Override
	public void valueChanged(ListSelectionEvent e) {
		// TODO Auto-generated method stub
		Theme temp=(Theme)lstTheme.getSelectedValue();
		preview.setBackground(temp.getFond());
		titrePage.setForeground(temp.getTitrePage());
		titre1.setForeground(temp.getTitre());
		titre2.setForeground(temp.getTitre());
		sstitre1.setForeground(temp.getSousTitre());
		sstitre2.setForeground(temp.getSousTitre());
		par1.setForeground(temp.getParagraphe());
		par2.setForeground(temp.getParagraphe());
		lien1.setForeground(temp.getLien());
		lien2.setForeground(temp.getLien());
		
	}
}
